Pest 是由 PHPUnit 包裝和新增一些功能而成,它可以使用原本的 PHPUnit 語法,也可以使用更簡潔美觀方式撰寫測試程式
因為 Pest 本身就包含了 PHPUnit,所以原本的 PHPUnit 可能會跟 Pest 衝突,移除 PHPUnit 後就不用在安裝 Pest 時加 -W 參數
在移除之前呢,先見它最後一面
vendor/bin/phpunit
開啟 composer.json,跟它說個再見
移除 PHPUnit
composer remove phpunit/phpunit --dev
打開官網,找到安裝的教學
https://pestphp.com/docs/installation
安裝 Pest
composer require pestphp/pest --dev
如果是使用 Laravel,要再安裝一個外掛,為了可以直接使用 php artisan test 跑 Pest 的測試
composer require pestphp/pest-plugin-laravel --dev
最後別忘了這一步,初始化 Pest
vendor/bin/pest --init
中間會問說要不要開啟 Github 幫它按星星
完成後 tests 資料夾中就會出現一個 Pest.php 檔案,這個是 Pest 的設定檔,詳細的使用方式可以查看官網文件,現在就可以開始使用囉
使用方式很簡單,跟 PHPUnit 完全一樣,在終端機輸入指令就可以了
vendor/bin/pest
我們一行測試程式都不用改就無痛轉移到 Pest 囉
不過裝都裝了,當然要試試新寫法啦,在官網找到範例的地方
https://pestphp.com/docs/writing-tests
看起來只要在 test 函式中放兩個參數,測式說明和匿名函式就可以了
也可以用「它」作為開頭,直接寫它做了什麼事情,或是它的結果應該是什麼
我們來改寫之前的 about 頁面的測式
先在下方用 it 把測式說明和匿名函式打好
把方法中的測試程式全部複製過來到函式中
最後把上面那些東西通通刪掉~
對比一下,變得超簡潔的對吧
再來跑一次,凡是有修改就要跑自動測試,可以提早發現錯誤
vendor/bin/pest
測試寫成字串而不是方法名稱真是好處多多,字不會黏在一塊、可以使用標點符號、甚至是中文,但是就沒辦法用 GUI 操作測試了,應該不久後就會支援了啦
不過要一個個改實在很麻煩,其實官網提供了一個工具,可以一個指令就把全部的測試轉換成新的寫法
從官網找到轉換的教學
https://pestphp.com/docs/migrating-from-phpunit-guide
安裝飄移外掛
composer require pestphp/pest-plugin-drift --dev
開始飄移
vendor/bin/pest --drift
總共有三個測試,轉換了兩個,一個是我們剛剛手動修改的,打開檔案會發現已經都轉換好了
再跑一次測試,凡是有修改就要跑自動測試,可以提早發現錯誤
pest
順利過關~
最後別忘了用 git 紀錄一下這次的變更